home *** CD-ROM | disk | FTP | other *** search
/ com!online 2005 May / com_0505_1.iso / opensource / top10 / amc_install.exe / {app} / Scripts / Stereo.pl.ifs < prev    next >
Encoding:
Text File  |  2004-03-20  |  16.5 KB  |  479 lines

  1. // GETINFO SCRIPTING
  2. // Stereo.pl
  3.  
  4. (***************************************************
  5.  *  Movie information & picture importation        *
  6.  *    script for stereo.pl http://stereo.pl/       *
  7.  *    c) 2003 Ketchup   (ketchuppp@wp.pl)          *
  8.  *   based on script 'Filmweb (PL) small pic.ifs'  *
  9.  *            by Piotr Kardasz & Adma's            *
  10.  *                                                 *
  11.  *  For use with Ant Movie Catalog 3.4.2           *
  12.  *               Tlen Rulezzzzzzzzzzzz             *
  13.  *  www.antp.be/software/moviecatalog              *
  14.  *                                                 *
  15.  *  This program is free software; you can         *
  16.  *  redistribute it and/or modify it under the     *
  17.  *  terms of the GNU General Public License as     *
  18.  *  published by the Free Software Foundation;     *
  19.  *  either version 2 of the License, or (at your   *
  20.  *  option) any later version.                     *
  21.  ***************************************************)
  22.  
  23. program Stereo;
  24. var
  25.   MovieName, AdressTemp: string;
  26.  
  27. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  28. var
  29.   i: Integer;
  30. begin
  31.   result := -1;
  32.   if StartAt < 0 then
  33.     StartAt := 0;
  34.   for i := StartAt to List.Count-1 do
  35.     if Pos(Pattern, List.GetString(i)) <> 0 then
  36.     begin
  37.       result := i;
  38.       Break;
  39.     end;
  40. end;
  41.  
  42. procedure DelSpace(var Value: String);
  43. var
  44.   FullValue: String;
  45.   Counter: Integer;
  46. begin
  47.   if Value <> '' then
  48.   begin
  49.     FullValue := FullValue + StrGet(Value, 1);
  50.     for Counter := 2 to Length(Value) do
  51.     begin
  52.       if StrGet(Value, Counter) <> ' ' then
  53.         FullValue := FullValue + StrGet(Value, Counter)
  54.       else
  55.         if StrGet(FullValue, Length(FullValue)) <> ' ' then
  56.           FullValue := FullValue + ' ';
  57.     end;
  58.     Value := FullValue;
  59.   end
  60. end;
  61.  
  62. procedure DecodeHTML(var Value: String);
  63. var
  64.   FullValue, CharCode: String;
  65.   Counter: Integer;
  66. begin
  67.   if Value <> '' then
  68.   begin
  69.     FullValue := '';
  70.     Counter := 1;
  71.     repeat
  72.       if StrGet(Value, Counter) <> '&' then
  73.         begin
  74.           CharCode := copy(Value, Counter, 1);
  75.           case CharCode of
  76.             '▒': CharCode := '╣';
  77.             '╢': CharCode := '£';
  78.             'í': CharCode := 'Ñ';
  79.             '╝': CharCode := 'ƒ';
  80.             'ª': CharCode := 'î';
  81.             '¼': CharCode := 'Å';
  82.           end;
  83.           FullValue := FullValue + CharCode;
  84.           Counter := Counter + 1;
  85.         end
  86.       else
  87.         begin
  88.           CharCode := copy(Value, Counter, 7);
  89.           case CharCode of
  90.             'ą': FullValue := FullValue + '╣';
  91.             'ć': FullValue := FullValue + 'µ';
  92.             'ę': FullValue := FullValue + 'Ω';
  93.             'ł': FullValue := FullValue + '│';
  94.             'ń': FullValue := FullValue + '±';
  95.             'ó': FullValue := FullValue + '≤';
  96.             'ś': FullValue := FullValue + '£';
  97.             'ź': FullValue := FullValue + 'ƒ';
  98.             'ż': FullValue := FullValue + '┐';
  99.             'Ą': FullValue := FullValue + 'Ñ';
  100.             'Ć': FullValue := FullValue + '╞';
  101.             'Ę': FullValue := FullValue + '╩';
  102.             'Ł': FullValue := FullValue + 'ú';
  103.             'Ń': FullValue := FullValue + '╤';
  104.             'Ó': FullValue := FullValue + '╙';
  105.             'Ś': FullValue := FullValue + 'î';
  106.             'Ź': FullValue := FullValue + 'Å';
  107.             'Ż': FullValue := FullValue + '»';
  108.             'Š': FullValue := FullValue + ' ';
  109.             'š': FullValue := FullValue + 'í';
  110.             'Ţ': FullValue := FullValue + 'í';
  111.             'ţ': FullValue := FullValue + 'ú';
  112.             'Ť': FullValue := FullValue + 'ñ';
  113.             'ť': FullValue := FullValue + 'Ñ';
  114.             'Ŧ': FullValue := FullValue + 'î';
  115.             'ŧ': FullValue := FullValue + 'º';
  116.             'Ũ': FullValue := FullValue + '¿';
  117.             'ũ': FullValue := FullValue + '⌐';
  118.             'Ű': FullValue := FullValue + '¬';
  119.             'ű': FullValue := FullValue + '½';
  120.             'Ų': FullValue := FullValue + '¼';
  121.             'ų': FullValue := FullValue + '¡';
  122.             'Ŵ': FullValue := FullValue + '«';
  123.             'ŵ': FullValue := FullValue + '»';
  124.             'Ŷ': FullValue := FullValue + '░';
  125.             'ŷ': FullValue := FullValue + '▒';
  126.             'Ÿ': FullValue := FullValue + '▓';
  127.             'ƀ': FullValue := FullValue + '┤';
  128.             'Ɓ': FullValue := FullValue + '╡';
  129.             'Ƃ': FullValue := FullValue + '╢';
  130.             'ƃ': FullValue := FullValue + '╖';
  131.             'Ƅ': FullValue := FullValue + '╕';
  132.             'ƅ': FullValue := FullValue + '╣';
  133.             'Ɔ': FullValue := FullValue + '║';
  134.             'Ƈ': FullValue := FullValue + '╗';
  135.             'ƈ': FullValue := FullValue + '╝';
  136.             'Ɖ': FullValue := FullValue + '╜';
  137.             'Ɛ': FullValue := FullValue + '╛';
  138.             'Ƒ': FullValue := FullValue + '┐';
  139.             'ƒ': FullValue := FullValue + '└';
  140.             'Ɠ': FullValue := FullValue + '┴';
  141.             'Ɣ': FullValue := FullValue + '┬';
  142.             'ƕ': FullValue := FullValue + '├';
  143.             'Ɩ': FullValue := FullValue + '─';
  144.             'Ɨ': FullValue := FullValue + '┼';
  145.             'Ƙ': FullValue := FullValue + '╞';
  146.             'ƙ': FullValue := FullValue + '╟';
  147.             'Ȁ': FullValue := FullValue + '╚';
  148.             'ȁ': FullValue := FullValue + '╔';
  149.             'Ȃ': FullValue := FullValue + '╩';
  150.             'ȃ': FullValue := FullValue + '╦';
  151.             'Ȅ': FullValue := FullValue + '╠';
  152.             'ȅ': FullValue := FullValue + '═';
  153.             'Ȇ': FullValue := FullValue + '╬';
  154.             'ȇ': FullValue := FullValue + '╧';
  155.             'Ȉ': FullValue := FullValue + '╨';
  156.             'ȉ': FullValue := FullValue + '╤';
  157.             'Ȑ': FullValue := FullValue + '╥';
  158.             'ȑ': FullValue := FullValue + '╙';
  159.             'Ȓ': FullValue := FullValue + '╘';
  160.             'ȓ': FullValue := FullValue + '╒';
  161.             'Ȕ': FullValue := FullValue + '╓';
  162.             'ȕ': FullValue := FullValue + '╫';
  163.             'Ȗ': FullValue := FullValue + '╪';
  164.             'ȗ': FullValue := FullValue + '┘';
  165.             'Ș': FullValue := FullValue + '┌';
  166.             'ș': FullValue := FullValue + '█';
  167.             'Ƞ': FullValue := FullValue + '▄';
  168.             'ȡ': FullValue := FullValue + '▌';
  169.             'Ȣ': FullValue := FullValue + '▐';
  170.             'ȣ': FullValue := FullValue + '▀';
  171.             'Ȥ': FullValue := FullValue + 'α';
  172.             'ȥ': FullValue := FullValue + 'ß';
  173.             'Ȧ': FullValue := FullValue + 'Γ';
  174.             'ȧ': FullValue := FullValue + 'π';
  175.             'Ȩ': FullValue := FullValue + 'Σ';
  176.             'ȩ': FullValue := FullValue + 'σ';
  177.             'Ȱ': FullValue := FullValue + 'µ';
  178.             'ȱ': FullValue := FullValue + 'τ';
  179.             'Ȳ': FullValue := FullValue + 'Φ';
  180.             'ȳ': FullValue := FullValue + 'Θ';
  181.             'ȴ': FullValue := FullValue + 'Ω';
  182.             'ȵ': FullValue := FullValue + 'δ';
  183.             'ȶ': FullValue := FullValue + '∞';
  184.             'ȷ': FullValue := FullValue + 'φ';
  185.             'ȸ': FullValue := FullValue + 'ε';
  186.             'ȹ': FullValue := FullValue + '∩';
  187.             'ɀ': FullValue := FullValue + '≡';
  188.             'Ɂ': FullValue := FullValue + '±';
  189.             'ɂ': FullValue := FullValue + '≥';
  190.             'Ƀ': FullValue := FullValue + '≤';
  191.             'Ʉ': FullValue := FullValue + '⌠';
  192.             'Ʌ': FullValue := FullValue + '⌡';
  193.             'Ɇ': FullValue := FullValue + '÷';
  194.             'ɇ': FullValue := FullValue + '≈';
  195.             'Ɉ': FullValue := FullValue + '°';
  196.             'ɉ': FullValue := FullValue + '∙';
  197.             'ɐ': FullValue := FullValue + '·';
  198.             'ɑ': FullValue := FullValue + '√';
  199.             'ɒ': FullValue := FullValue + 'ⁿ';
  200.             'ɓ': FullValue := FullValue + '²';
  201.             'ɔ': FullValue := FullValue + '■';
  202.             'ɕ': FullValue := FullValue + ' ';
  203.             '&#x%DF;': FullValue := FullValue + '▀';
  204.             '4': FullValue := FullValue + '"';    
  205.           else
  206.             FullValue := FullValue + CharCode;  
  207.           end;
  208.           Counter := Counter + 7;
  209.         end;
  210.     until Counter > Length(Value);
  211.     HTMLDecode(FullValue);
  212.     Value := FullValue;
  213.   end
  214. end;
  215.  
  216. procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
  217. var
  218.   Line: string;
  219.   MovieTitle, MovieAddress,temp: string;
  220.   StartPos, EndPos: Integer;
  221. begin
  222.   LineNr := FindLine('kam.gif', Page, LineNr);
  223.   if LineNr > -1 then
  224.   begin
  225.     PickTreeAdd('Znaleziono filmy:', '');
  226.     Line := Page.GetString(LineNr+1);
  227.     repeat
  228.       repeat
  229.         StartPos := pos('tytul_m href="', Line) + 14;
  230.         Line := copy(Line, StartPos, Length(Line) - StartPos);      
  231.         MovieAddress := copy(Line, 1, pos('">', Line) - 1);
  232.         StartPos := pos('">', Line) + 2;
  233.         Line := copy(Line, StartPos, Length(Line) - StartPos);
  234.         MovieTitle := copy(Line, 1, pos('</a>', Line) - 1);
  235.         DecodeHTML(MovieTitle);
  236.         HTMLRemoveTags(MovieTitle);
  237.         PickTreeAdd(MovieTitle, 'http://piwnicapodbaranami.stereo.pl/' + MovieAddress);
  238.       until pos('tytul_m href="', Line) = 0;
  239.       LineNr := LineNr + 1;
  240.       LineNr := FindLine('kam.gif', Page, LineNr);
  241.       Line := Page.GetString(LineNr+1);
  242.     until LineNr < 0;
  243.   end
  244.   else
  245.     break;
  246. end;
  247.  
  248. procedure AnalyzePage(Address: string);
  249. var
  250.   Page: TStringList;
  251.   LineNr: Integer;
  252. begin
  253.   Page := TStringList.Create;
  254.   AdressTemp := Address;
  255.   Page.Text := GetPage(Address);
  256.   if pos('Wyniki wyszukiwania', Page.Text) = 0 then
  257.     AnalyzeMoviePage(Page)
  258.   else
  259.   begin
  260.     PickTreeClear;
  261.     LineNr := 0;
  262.     AddMoviesTitles(Page, LineNr);
  263.     if PickTreeExec(Address) then
  264.       AnalyzePage(Address);
  265.   end;
  266.   Page.Free;
  267. end;
  268.  
  269. procedure AnalyzeMoviePage(Page: TStringList);
  270. var
  271.   Line, Value, FullValue, LineTemp, ValueTemp: string;
  272.   LineNr, Counter, Temp: Integer;
  273.   StartPos, EndPos, i: Integer;
  274. begin
  275. Temp := 0;
  276.   // Tytu│ polski
  277.   LineNr := FindLine('class=tytul', Page, 0);
  278.   if LineNr > -1 then
  279.   begin
  280.     Temp := 1;
  281.     Line := Page.GetString(LineNr);
  282.     LineTemp := Line;
  283.     StartPos := pos('<i>', Line) + 3;
  284.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  285.     StartPos := pos(' - [', Line);
  286.     if StartPos > 0 then Value := copy(Line, 1, StartPos - 1)
  287.       else
  288.       begin
  289.        StartPos := pos(' (', Line);
  290.        if StartPos > 0
  291.          then Value := copy(Line, 1, StartPos - 1)
  292.          else
  293.          begin
  294.          StartPos := pos('<br>', Line); 
  295.          Value := copy(Line, 1, StartPos - 1);
  296.          end       
  297.       end  
  298.     ValueTemp := Value;  
  299.     DecodeHTML(Value);
  300.     HTMLRemoveTags(Value); 
  301.     SetField(fieldTranslatedTitle, Value);
  302.   end
  303.  
  304.   // Tytu│ oryginalny
  305.   if Temp = 1 then
  306.   begin
  307.     Line := LineTemp;
  308.     StartPos := pos(' (', Line);
  309.     if StartPos > 0 then 
  310.       begin      
  311.        Line := copy(Line, StartPos + 2, Length(Line) - StartPos - 2);
  312.        StartPos := pos(')', Line);
  313.        Value := copy(Line, 1, StartPos - 1);
  314.        StartPos := pos('-', Value);
  315.        if StartPos > 0 then Value := copy(Value, 1, StartPos - 1); 
  316.       end
  317.       else
  318.       begin
  319.        Value := ValueTemp;
  320.       end    
  321.     DecodeHTML(Value);
  322.     HTMLRemoveTags(Value); 
  323.     SetField(fieldOriginalTitle, Value);
  324.   end
  325.     
  326.   // Rok produkcji
  327.   LineNr := FindLine('Rok premiery:', Page, 0);
  328.   if LineNr > -1 then
  329.   begin
  330.     Line := Page.GetString(LineNr);
  331.     StartPos := pos('Rok premiery:', Line) + 14;
  332.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  333.     StartPos := pos('<BR>', Line);
  334.     Value := copy(Line, 1, StartPos - 1);
  335.     SetField(fieldYear, Value);
  336.   end
  337.  
  338.   // Re┐yseria
  339.   LineNr := FindLine('Re┐yseria:', Page, 0);
  340.   if LineNr > -1 then
  341.   begin
  342.     Line := Page.GetString(LineNr + 3);
  343.     StartPos := pos('artysta.php', Line) + 11;
  344.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  345.     StartPos := pos('">', Line) + 2;
  346.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  347.     StartPos := pos('<', Line);
  348.     Value := copy(Line, 1, StartPos - 1);
  349.     HTMLRemoveTags(Value);
  350.     DecodeHTML(Value); 
  351.     SetField(fieldDirector, Value);
  352.   end
  353.  
  354.   // Producent
  355.   LineNr := FindLine('Wydawca:', Page, 0);
  356.   if LineNr > -1 then
  357.   begin
  358.     Line := Page.GetString(LineNr);
  359.     StartPos := pos('Wydawca: ', Line) + 9;
  360.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  361.     StartPos := pos(' <br>', Line);
  362.     Value := copy(Line, 1, StartPos - 2);
  363.     HTMLRemoveTags(Value);
  364.     DecodeHTML(Value); 
  365.     SetField(fieldProducer, Value);
  366.   end
  367.  
  368.   // Czas trwania
  369.   LineNr := FindLine('ú▒czny czas:', Page, 0);
  370.   if LineNr > -1 then
  371.   begin
  372.     Line := Page.GetString(LineNr);
  373.     StartPos := pos('ú▒czny czas:', Line) + 13;
  374.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  375.     StartPos := pos('min.', Line);
  376.     Value := copy(Line, 1, StartPos - 2);
  377.     SetField(fieldLength, Value);
  378.   end
  379.   
  380.   // Opis filmu
  381.     LineNr := FindLine('Opis:', Page, 0);
  382.     if StartPos > 0 then
  383.     begin 
  384.      Line := Page.GetString(LineNr);
  385.      StartPos := pos('Opis:', Line);      
  386.      Delete(Line, StartPos, 5);
  387.      StartPos := pos('</ul>', Line);
  388.      if StartPos > 0 then
  389.      begin
  390.       Delete(Line, StartPos, 5);
  391.       Insert(#13#10, Line, StartPos);
  392.      end
  393.      repeat
  394.       StartPos := pos('<li>', Line);
  395.       if StartPos > 0 then
  396.       begin 
  397.        Delete(Line, StartPos, 4);
  398.        Insert(#13#10 + '-', Line, StartPos);    
  399.       end
  400.      until StartPos = 0;
  401.      StartPos := pos('Dodatki:', Line);
  402.      if StartPos > 0 then
  403.       Line := copy(Line, 1, StartPos - 1);
  404.      HTMLRemoveTags(Line);
  405.      DecodeHTML(Line); 
  406.      DelSpace(Line);  
  407.      SetField(fieldDescription, Line);  
  408.     end  
  409.  
  410.   // Obsada
  411.   LineNr := FindLine('WystΩpuj', Page, 0);
  412.   i := 3;
  413.   Value := '';
  414.   if LineNr > -1 then
  415.   begin
  416.     repeat   
  417.      Line := Page.GetString(LineNr + i);  
  418.      StartPos := pos('artysta.php', Line) + 11;
  419.      Line := copy(Line, StartPos, Length(Line) - StartPos);
  420.      StartPos := pos('">', Line) + 2;
  421.      Line := copy(Line, StartPos, Length(Line) - StartPos);
  422.      StartPos := pos('<', Line);
  423.      Value := Value + copy(Line, 1, StartPos - 1) + ', ';
  424.      i := i + 2;
  425.     until pos('artysta.php', Page.GetString(LineNr + i)) = 0;
  426.     Value := copy(Value, 1, Length(Value) - 2);
  427.     HTMLRemoveTags(Value);
  428.     DecodeHTML(Value);     
  429.     SetField(fieldActors, Value);
  430.   end
  431.   
  432.   //URL
  433.   begin
  434.     setField(fieldURL, AdressTemp);
  435.   end
  436.   
  437.  //Foto
  438.   LineNr:= FindLine('okladka.php', Page, 0);
  439.   if LineNr > -1
  440.    then begin
  441.     Line:= Page.GetString(LineNr);
  442.     StartPos:= Pos('okladka.php', Line);
  443.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  444.     EndPos:=Pos(#39#44, Line) - 1;
  445.     Line:= Copy(Line, 1, EndPos);
  446.     Value:= 'http://piwnicapodbaranami.stereo.pl/' + Line;
  447.     Page.Text := GetPage(Value);
  448.     LineNr:= FindLine('<img src="', Page, 0);
  449.     if LineNr > -1
  450.      then begin
  451.       Line:= Page.GetString(LineNr);
  452.       StartPos:= Pos('<img src="', Line) + 11;
  453.       Line := copy(Line, StartPos, Length(Line) - StartPos);
  454.       EndPos:=Pos('">', Line) - 1;
  455.       Line:= Copy(Line, 1, EndPos);
  456.       Value:= 'http://piwnicapodbaranami.stereo.pl/' + Line;
  457.      end
  458.     GetPicture(Value, False); // False = nie przechowuj zdjΩcia na zewnΩtrz ; przechowuj w pliku katalogu
  459.   end
  460.  
  461.   DisplayResults;
  462. end;
  463.  
  464. begin
  465.   if CheckVersion(3,4,2) then
  466.   begin
  467.     MovieName := GetField(fieldOriginalTitle);
  468.     if MovieName = '' then
  469.       MovieName := GetField(fieldTranslatedTitle);
  470.     if Input('FilmWeb Import', 'Podaj tytu│ filmu:', MovieName) then
  471.     begin
  472.       AnalyzePage('http://piwnicapodbaranami.stereo.pl/most.php?szuk='+UrlEncode(MovieName));
  473.     end;
  474.   end else
  475.     ShowMessage('Skrypt wymaga programu Ant Movie Catalog w wersji 3.4.2 lub nowszej');
  476. end.
  477.  
  478.  
  479.